#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
  int p1=5;
  //创建5个子进程
  while(p1>0)
  {
      pid_t d = fork();
      if(d==0)
      {
        printf("我是子进程%d丫\n",getpid());
        sleep(2);
      }
      else
      {
        while(1)
        {   
          //非阻塞等待
          pid_t pc = waitpid(-1,NULL,WNOHANG);
          if(pc==0)
          {
            printf("我可以自己干自己的事情!\n");
          }
          else if(pc>0)
          {
            printf("回收%d成功!\n",getpid());
            //每次确保回收完一个子进程
            break;
          }
          else
          {
            printf("执行错误\n");
          }
        }
      }
      printf("p1==%d\n",p1--);
  }
  return 0;
}
